// pages/complaints/complaints.js
const request = require('../../utils/request');
Page({

  /**
   * 页面的初始数据
   */
  data: {
    suggestionType: "1", // 默认产品建议
    suggestion: {
      content: "",
      images: [] // 新增：存储图片临时路径/服务器路径
    },
    isSubmitting: false // 防止重复提交
  },
  // 设置建议类型
  setSuggestionType(e) {
    this.setData({
      suggestionType: e.currentTarget.dataset.type
    })
  },

  // 建议内容变化
  onSuggestionChange(e) {
    const field = e.currentTarget.dataset.field;
    const value = e.detail.value;
    const suggestion = { ...this.data.suggestion };
    suggestion[field] = value;
    this.setData({ suggestion });
  },

  // 新增：选择图片（最多4张）
  chooseImage() {
    const maxCount = 4 - this.data.suggestion.images.length;
    wx.chooseImage({
      count: maxCount, // 剩余可上传数量
      sizeType: ['original', 'compressed'], // 原图/压缩图
      sourceType: ['album', 'camera'], // 相册/相机
      success: (res) => {
        // 显示加载提示
        wx.showLoading({
          title: '图片上传中...',
          mask: true
        });

        // 使用 Promise.all 来并行上传所有选择的图片
        const uploadPromises = res.tempFilePaths.map(tempFilePath => {
          // 调用你项目中实际的上传方法
          return request.upload('/admin-api/infra/file/upload', tempFilePath);
        });
        Promise.all(uploadPromises)
        .then(results => {
          // 所有图片上传成功后，处理返回结果
          const uploadedUrls = results
            .filter(res => res.code === 0) // 过滤掉上传失败的
            .map(res => res.data); // 提取图片路径

          const suggestion = { ...this.data.suggestion };
          suggestion.images = [...suggestion.images, ...uploadedUrls];
          
          this.setData({ suggestion });
          wx.hideLoading(); // 隐藏加载提示

          // 如果有上传失败的图片，给出提示
          if (uploadedUrls.length < res.tempFilePaths.length) {
            wx.showToast({
              title: `部分图片上传失败`,
              icon: 'none'
            });
          }
        })
        .catch(err => {
          // 如果有一个图片上传失败，Promise.all 会立即 reject
          console.error('图片上传失败:', err);
          wx.hideLoading();
          wx.showToast({
            title: '图片上传失败，请重试',
            icon: 'none'
          });
        });
        // // 临时路径（实际项目中需上传到服务器，替换为永久路径）
        // const tempFilePaths = res.tempFilePaths;

        // const suggestion = { ...this.data.suggestion };
        // suggestion.images = [...suggestion.images, ...tempFilePaths];
        // this.setData({ suggestion });
      }
    })
  },

  // 新增：预览图片
  previewImage(e) {
    const index = e.currentTarget.dataset.index;
    const images = this.data.suggestion.images;
    wx.previewImage({
      current: images[index], // 当前预览图片
      urls: images // 所有预览图片列表
    })
  },

  // 新增：删除图片
  deleteImage(e) {
    const index = e.currentTarget.dataset.index;
    const suggestion = { ...this.data.suggestion };
    suggestion.images.splice(index, 1); // 删除对应图片
    this.setData({ suggestion });
  },

  // 返回上一页
  navigateBack() {
    wx.navigateBack();
  },

  // 提交建议（含图片）
  saveSuggestion() {
    // 防止重复提交
    if (this.data.isSubmitting) return;
    // 验证内容
    if (!this.data.suggestion.content.trim()) {
      wx.showToast({
        title: '请输入建议内容',
        icon: 'none'
      });
      return;
    }

    // 提交数据（实际项目中需先上传图片，获取服务器路径后再提交）
    const params = {
      category: this.data.suggestionType,
      content: this.data.suggestion.content,
      photos: this.data.suggestion.images // 临时路径（需替换为服务器路径）
    };

    this.setData({ isSubmitting: true }); // 开始提交，设置标志位
    wx.showLoading({ title: '提交中...', mask: true });
    request.post('/admin-api/system/complaints/create', params)
      .then(res => {
        if (res.code === 0) {
          wx.showToast({
            title: '提交成功',
            icon: 'success'
          });
          // 延迟返回，让用户看到成功提示
          setTimeout(() => {
            wx.navigateBack();
          }, 1500);
        } else {
          wx.showToast({
            title: res.msg || '提交失败',
            icon: 'none'
          });
        }
      })
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {

  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  }
})